import { useTagData } from './useTagData'
import type { TagDisplayInfo } from './types'

export const useTagDisplay = () => {
  const { tags, getTagByDisplayName } = useTagData()

  // 获取系统预定义标签的显示信息
  const getSystemTagDisplay = (fieldValue: string, categoryName: string): TagDisplayInfo => {
    if (!fieldValue) {
      return {
        displayName: '未设置',
        color: '#6B7280',
        description: '未设置该分类信息',
        isSystemTag: true,
        isUnknown: false
      }
    }

    const tag = getTagByDisplayName(categoryName, fieldValue)
    
    if (tag && tag.is_active) {
      return {
        displayName: tag.display_name,
        color: tag.color,
        description: tag.description,
        isSystemTag: true,
        isUnknown: false
      }
    }

    // 标签不存在或已删除
    return {
      displayName: `${fieldValue} (未知)`,
      color: '#6B7280',
      description: '该标签已被删除或不存在',
      isSystemTag: true,
      isUnknown: true
    }
  }

  // 获取用户自定义标签的显示信息
  const getUserTagDisplay = (tagValue: string): TagDisplayInfo => {
    return {
      displayName: tagValue,
      color: '#3B82F6', // 默认蓝色
      description: '用户自定义标签',
      isSystemTag: false,
      isUnknown: false
    }
  }

  // 根据分类获取标签显示信息
  const getTagsByCategoryDisplay = (categoryName: string): TagDisplayInfo[] => {
    const categoryTags = tags.value[categoryName] || []
    return categoryTags
      .filter(tag => tag.is_active)
      .map(tag => ({
        displayName: tag.display_name,
        color: tag.color,
        description: tag.description,
        isSystemTag: true,
        isUnknown: false
      }))
  }

  // 检查标签是否为系统预定义标签
  const isSystemTag = (tagValue: string, categoryName: string): boolean => {
    const tag = getTagByDisplayName(categoryName, tagValue)
    return tag !== null && tag.is_active
  }

  // 获取标签的完整信息（用于编辑表单）
  const getTagInfoForEdit = (fieldValue: string, categoryName: string) => {
    const tag = getTagByDisplayName(categoryName, fieldValue)
    return {
      value: fieldValue,
      displayName: tag?.display_name || fieldValue,
      isSystemTag: tag !== null,
      isActive: tag?.is_active || false,
      tagId: tag?.id || null
    }
  }

  // 获取电影所有标签的显示信息
  const getMovieAllTagsDisplay = (params: {
    genres: string[]
    universe?: string
    language?: string
    country?: string
    tags: string[]
  }) => {
    const result: TagDisplayInfo[] = []
    
    // 添加系统标签
    if (params.genres && params.genres.length > 0) {
      params.genres.forEach(genre => {
        result.push(getSystemTagDisplay(genre, 'genre'))
      })
    }
    
    if (params.universe) {
      result.push(getSystemTagDisplay(params.universe, 'universe'))
    }
    
    if (params.language) {
      result.push(getSystemTagDisplay(params.language, 'language'))
    }
    
    if (params.country) {
      result.push(getSystemTagDisplay(params.country, 'country'))
    }
    
    // 添加用户标签
    if (params.tags && params.tags.length > 0) {
      params.tags.forEach(tag => {
        result.push(getUserTagDisplay(tag))
      })
    }
    
    return result
  }

  return {
    // 基础方法
    getSystemTagDisplay,
    getUserTagDisplay,
    
    // 分类标签显示方法
    getTagsByCategoryDisplay,
    
    // 工具方法
    isSystemTag,
    getTagInfoForEdit,
    
    // 电影标签显示方法
    getMovieAllTagsDisplay
  }
}
